<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../resct18/react.development.js"></script>
    <script src="../resct18/react-dom.development.js"></script>
    <script src="../resct18/babel.min.js"></script>
</head>

<body>
    <div id="app"></div>
    <script type="text/babel">
        /* 
        字符串形式的Refs:
            -给被获取的元素添加一个ref属性,值是字符串(随意命名)
            -在组件实例上就会有一个ref属性,对象中有一个你设置的字符串属性,值是它代表的DOM节点

        回调形式的refs
            -ref属性 ,传递一个函数. 这个函数在渲染的时候就会执行,这个函数中接收HTML DOM元素作为参数,以使它们能在其他地方被存储和访问
        
        创建Refs
            -Refs是使用React.createRef()创建的,并通过ref属性添加到React元素.在构造组件的时候,会把当前书写ref的DOM(例:下面的是<input type="text">)交给创建的iptEle保管,放在它的current属性上
            创建的Refs只能存放一个DOM
        不使用ref获取元素
            -如果发生事件的时候,需要获取自身元素的时候,可以直接用e.target
        */

        class APP extends React.Component{   
            render(){
                return (
                    <div>
                        姓名:<input type="text" ref={c => this.nameEle=c}/>
                        <br/>
                        年龄:<input type="text" ref={c => this.ageEle=c}/>
                        <br/>
                        爱好:<input type="text" ref={c => this.hobbyEle=c}/>
                        <br/>
                        <button onClick={this.handle}>提交</button>
                        <br/>
                    </div>
                )
            }
            handle = ()=>{
                const name = this.nameEle.value;
                const age = this.ageEle.value;
                const hobby = this.hobbyEle.value;
                console.log(name,age,hobby);

            }
            
        }



       const root=ReactDOM.createRoot(document.getElementById('app'));
       root.render(<APP/>)

    </script>
</body>

</html>